//package com.yc.controller;
//
//import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
//import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
//import com.baomidou.mybatisplus.extension.plugins.pagination.PageDTO;
//import com.yc.biz.impl.CartService;
//import com.yc.biz.impl.HotProductRedisService;
//import com.yc.dto.Result;
//import com.yc.entity.Mgoods;
//import com.yc.mapper.MgoodsMapper;
//
//import io.jsonwebtoken.Claims;
//import lombok.Data;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.web.bind.annotation.RequestBody;
//import org.springframework.web.bind.annotation.RequestMapping;
//import org.springframework.stereotype.Controller;
//import org.springframework.web.bind.annotation.RequestParam;
//import org.springframework.web.bind.annotation.RestController;
//
//import javax.servlet.http.Cookie;
//import javax.servlet.http.HttpServletRequest;
//import java.util.ArrayList;
//import java.util.List;
//import java.util.Map;
//import java.util.Set;
//
///**
// * <p>
// *  前端控制器
// * </p>
// *
// * @author cxw
// * @since 2024-11-10
// */
//@RestController
//@RequestMapping("mgoods")
//public class MgoodsController {
//    @Autowired
//    CartService cartService;
////    @Autowired
////    JwtUtil jwtUtil;
//    @Autowired
//    MgoodsMapper mgoodsMapper;
//    @Autowired
//    HotProductRedisService hotProductRedisService;
//
//    Integer getUserId(HttpServletRequest request){
//        // 从HTTP请求的Cookie中获取JWT
//        Cookie[] cookies = request.getCookies();
//        String jwt = null;
//        for (Cookie cookie : cookies) {
//            if ("jwt".equals(cookie.getName())) {
//                jwt = cookie.getValue();
//                break;
//            }
//        }
//        // 解析JWT并获取Claims
////        Claims claims = jwtUtil.parseJWT(jwt);
//        // 从Claims中获取用户信息
////        Integer userId = claims.get("userId", Integer.class);
////        return userId;
//        return 0;
//    }
//
//    @RequestMapping("queryHots")
//    Result queryHots(){
//        int limit=10;
////        Page<Mgoods> page=new PageDTO<>(1,4);
////        LambdaQueryWrapper<Mgoods> lqw=new LambdaQueryWrapper<>();
////        lqw.eq(Mgoods::getIshot,1);
////        page=mgoodsMapper.selectPage(page,lqw);
////        return page.getRecords(); // 返回查询到的记录列表
//        Set<String> hotgoodsid=hotProductRedisService.getHotProducts(limit);
//        List<Mgoods> goods=new ArrayList<>();
//        for (String goodsid:hotgoodsid){
//            try {
//                int gid = Integer.parseInt(goodsid);
//               Mgoods mgoods= mgoodsMapper.selectByGid(gid);
//               if (mgoods!=null){
//                   goods.add(mgoods);
//               }
//
//            } catch (NumberFormatException e) {
//                // 处理异常，例如打印错误信息或跳过无效的goodsid
//                System.err.println("ID转换无效Invalid goodsid: " + goodsid);
//            }
//        }
//        return Result.ok("热门商品查询成功",goods);
//
//    }
//
//    @RequestMapping("goodsxiangxi")
//    Result goodsxiangxi(@RequestParam  int gid){
//        Mgoods mgoods=mgoodsMapper.selectByGid(gid);
//        return Result.ok("商品详细查询成功",mgoods);
//    }
//
//    //增加热门商品得浏览次数
//    @RequestMapping("addHotProductScore")
//    void addHotProductScore(@RequestParam int gid){
//
//        hotProductRedisService.addHotProductScore(gid);
//    }
//
//
////加入购物车
//    @RequestMapping("addToCart")
//    int addToCart(HttpServletRequest request,@RequestParam int gid, @RequestParam int quantity){
//       Integer userId=this.getUserId(request);
//        int result=cartService.addToCart(userId,gid,quantity);
//        return result;
//    }
//
//    //获取购物车商品信息
//    @RequestMapping("getCargoods")
//    Result getCargoods(HttpServletRequest request){
//        Integer userId=this.getUserId(request);
//        Map<Integer,Integer> cartItems=cartService.getCartItems(userId);
//        List<CartItem> cartDetails = new ArrayList<>();
//
//        // 遍历购物车中的商品ID和数量
//        for (Map.Entry<Integer, Integer> entry : cartItems.entrySet()) {
//            Integer productId = entry.getKey();
//            Integer quantity = entry.getValue();
//
//            // 根据商品ID获取商品详细信息
//            Mgoods mgoods = mgoodsMapper.selectByGid(productId);
//
//            // 组装购物车商品信息
//            CartItem cartItem = new CartItem();
//            cartItem.setMgoods(mgoods);
//            cartItem.setQuantity(quantity);
//
//            // 将购物车商品信息添加到列表中
//            cartDetails.add(cartItem);
//        }
//        if (cartDetails!=null){
//            return Result.ok("购物车商品信息显示成功",cartDetails);
//        }else {
//            return null;
//        }
//
//    }
////增加商品数量
//    @RequestMapping("increaseQuantity")
//    Integer increaseQuantity(HttpServletRequest request,@RequestParam int gid, @RequestParam int quantity,@RequestParam int uid){
//        cartService.updateCartItemQuantity(uid,gid,quantity);
//        int Goodsquantity=cartService.getCartItemQuantity(uid,gid);
//        if (Goodsquantity!=0){
//            return Goodsquantity;
//        }else {
//            return 500;
//        }
//    }
////减少商品数量
//    @RequestMapping("reduceQuantity")
//    Integer reduceQuantity(HttpServletRequest request,@RequestParam int gid, @RequestParam int quantity,@RequestParam int uid){
//        cartService.updateCartItemQuantity(uid,gid,quantity);
//        int Goodsquantity=cartService.getCartItemQuantity(uid,gid);
//        if (Goodsquantity!=0){
//            return Goodsquantity;
//        }else {
//            return 500;
//        }
//    }
//
//    //删除购物车
//    @RequestMapping("deleteCar")
//    int deleteCar(HttpServletRequest request,@RequestParam int gid,@RequestParam int uid){
//
//        boolean bool =cartService.removeFromCart(uid,gid);
//        if (bool){
//            return 1;
//        }else{
//            return 500;
//        }
//    }
//    //点击结算时获取链接传来的商品id数组，并返回商品信息和redis中的数量
//    @RequestMapping("getCargoodsIdAndGoods")
//    Result getCargoodsIdAndGoods(@RequestBody List<Integer> productIds,HttpServletRequest request){
//        Integer userId=this.getUserId(request);
//        List<CartItem> cartDetails = new ArrayList<>();
//        // 使用流API遍历商品ID列表
//        productIds.stream().forEach(productId -> {
//            // 获取每个商品ID的购物车数量，这里需要将Long转换为Integer，如果productId是Long类型的话
//            Integer quantity = cartService.getCartItemQuantity(userId, productId);
//            // 根据商品ID获取商品详细信息
//            Mgoods mgoods = mgoodsMapper.selectByGid(productId);
//
//            // 组装购物车商品信息
//            CartItem cartItem = new CartItem();
//            cartItem.setMgoods(mgoods);
//            cartItem.setQuantity(quantity);
//            cartDetails.add(cartItem);
//
//        });
//        if (cartDetails!=null){
//            return Result.ok("结算页面商品信息和数量查询成功",cartDetails);
//        }else {
//            return null;
//        }
//
//    }
//
//    // 辅助类，用于封装购物车中的商品和数量
//    @Data
//    public static class CartItem {
//        private Mgoods mgoods;
//        private Integer quantity;
//
//        // getters and setters
//    }
//}
